package eu.runelord.tools.dictionaries;

import java.util.Collection;

import eu.runelord.tools.dictionaries.exceptions.ModificationTrialException;

/**
 * Interfejs słownika niemodyfikowalnego. Rozszerza {@link IDictionary} dodając
 * możliwość wyrzucenia błędu {@link ModificationTrialException} do metod
 * związanych z dodawaniem, usuwaniem i modyfikacją wartości słownika. Nie
 * należy bezpośrednio tworzyć implementacji tego interfejsu. Klasa
 * {@link AbstractUnmodifiableDictionary} zapewnia odpowiednie implemetacje
 * metod odpowiedzialnych za dodawanie, usuwanie i modyfikację wartości
 * słownika. Tym samym nasz słownik na pewno nie jest modyfikowalny.
 * 
 * @author Koziołek
 * 
 */
public interface IUnmodifiableDictionary extends IDictionary {

	public void addOrUpdateValue(Value value) throws ModificationTrialException;

	public void addValue(Value value) throws ModificationTrialException;

	public void deleteValue(Value value) throws ModificationTrialException;

	public void setValues(Collection<Value> valueCollection)
			throws ModificationTrialException;

	public void updateValue(Value oldValue, Value newValue)
			throws ModificationTrialException;
}
